<?php
class OcupanteDAO extends GenericDAO  {

	function __construct() {
		$this->tabela["alteracao"] = array(	"id" 	=> 379,
											"nome" 	=> strtolower(substr(get_class(), 0, -3)));
	
		$this->tabela["consulta"]  = array(	"id" 	=> 398,
											"nome" 	=> "vw_" . strtolower(substr(get_class(), 0, -3)));

		$this->tabela["relatorio"]  = array("id" 	=> 519,
											"nome" 	=> "vw_rel_sepultamentos");
	}
	
	public function consultarPK($valor) {
	    $sql = "where id = :id";
	    $params['id'] = $valor;
	    return $this->consultar($sql, $params);
	}
	
	public function inserir($registro, $finalizarTransacao = true) {
		if (isset($registro['dt_nasc'])) {
			$data = explode('/', $registro['dt_nasc']);
			if (isset($data[2])) {
				$registro['dt_nasc'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_nasc']);
			}
			unset($data);
		}
			
		if (isset($registro['dt_falecim'])) {
			$data = explode('/', $registro['dt_falecim']);
			if (isset($data[2])) {
				$registro['dt_falecim'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_falecim']);
			}
			unset($data);
		}
		
		if (isset($registro['dt_sepult'])) {
			$data = explode('/', $registro['dt_sepult']);
			if (isset($data[2])) {
				$registro['dt_sepult'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_sepult']);
			}
			unset($data);
		}
		
		$res = null;
		
		if ($this->inserirRegistro($registro, $finalizarTransacao)) {
			$res = $registro;
			$res['id'] = $this->ultimoId();
		}
		return $res;
	}
	
	public function excluir($id, $finalizarTransacao = true) {
		$pk['id'] = $id;
		return $this->excluirRegistro($pk, $finalizarTransacao);
	}
	
	public function alterar($registro, $finalizarTransacao = true) {
		if (isset($registro['dt_nasc'])) {
			$data = explode('/', $registro['dt_nasc']);
			if (isset($data[2])) {
				$registro['dt_nasc'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_nasc']);
			}
			unset($data);
		}
			
		if (isset($registro['dt_falecim'])) {
			$data = explode('/', $registro['dt_falecim']);
			if (isset($data[2])) {
				$registro['dt_falecim'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_falecim']);
			}
			unset($data);
		}
		
		if (isset($registro['dt_sepult'])) {
			$data = explode('/', $registro['dt_sepult']);
			if (isset($data[2])) {
				$registro['dt_sepult'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['dt_sepult']);
			}
			unset($data);
		}
				
		$pk['id'] 		= $registro['id'];
		unset($registro['id']);
		return $this->alterarRegistro($registro, $pk, $finalizarTransacao);
	}
	
	public function contarOcupantes($id_lote) {
		$sql = "select count(*) total from ocupante where lote = :lote";
		$params['lote'] = $id_lote;
		return $this->execQuery($sql, $params);
	}
	
	public function consultarRelatorio($tipo, $filtro, $campo_ordem, $ordem) {
		$campo = array ("a" => "ad_nome",
						"o" => "nome");
		
		$where = " where " . $campo[$campo_ordem] . " like :nome ";
		$order = " order by " . $campo[$campo_ordem];
		switch ($tipo) {
			case "i":
				$params['nome'] = "$filtro%";
				break;
			case "c":
				$params['nome'] = "%$filtro%";
				break;
			default:
				$where = "";
				$params= array();
		}
		
		return $this->extrairRelatorio($where . $order, $params);
	}
}
?>